iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0
Python

30天零基礎學習Python程式語言系列 第 26

Day 26: 鴨子型別 + 獠牙運算符 + 函式指派給變數

  • 分享至 

  • xImage
  •  

鴨子型別Duck Typing

如果一個物件擁有足夠的方法和屬性,就算他不屬於特定的類別,Python也會將他當作這個類別的物件來處理
ex:如果他走路和叫聲都像鴨子=>就是一隻鴨子
範例:兩個類別:duck & chicken

class Duck:
    def walk(self):
        print("鴨子在走路")
    def talk(slef):
        print("鴨子在呱呱叫")
        
class Chicken:
    def walk(self):
        print("雞在走路")
    def talk(self):
        print("雞在咕咕叫")
        
#即使沒有繼承關係,也可以當作同一類型的類別使用
class Person():
    def catch(slef, duck):
        duck.walk()
        duck.talk()
duck = Duck()
person = Person()
person.catch(duck)


鴨子在走路
鴨子在呱呱叫
class Duck:
    def walk(self):
        print("鴨子在走路")
    def talk(slef):
        print("鴨子在呱呱叫")
        
class Chicken:
    def walk(self):
        print("雞在走路")
    def talk(self):
        print("雞在咕咕叫")
        
#即使沒有繼承關係,也可以當作同一類型的類別使用
class Person():
    def catch(slef, duck):
        duck.walk()
        duck.talk()
chicken = Chicken()
person = Person()
person.catch(chicken)


雞子在走路
雞在咕咕叫

獠牙運算符

獠牙運算符=賦值表達式(:=)
<=相反=>
賦值運算子(=)
Python 3.8後加入的特性:可將辭分配給變數作為表達式的一部分
原先程式

happy = True
print(happy)


True

獠牙運算符表示法

#如果輸入=會出現錯誤,無法回傳True
print(happy := True)


True

範例原先程式:

foods = []
while Ture:
    food = input('你喜歡什麼食物?')
    if food == 'quit':
        break
    food.append(food)
    
print(foods)


你喜歡什麼食物?蘋果
你喜歡什麼食物?香蕉
你喜歡什麼食物?quit
['蘋果','香蕉']

獠牙運算符表示法

food = []
while (food := input('你喜歡什麼食物?')) !='quit':
    foods.append(food)
print(foods)


你喜歡什麼食物?拉麵
你喜歡什麼食物?水餃
你喜歡什麼食物?quit
['拉麵','水餃']

函式指派給變數

def hello():
    print("hello")
    
hi = hello
hi()


hello

內建函式也有相同效果

say = print
say("hello")
say("hi")

上一篇
Day 25: 方法鏈 + super 方法 + 物件作為引數
下一篇
Day 27: lambda λ + map + filter
系列文
30天零基礎學習Python程式語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言